In systems employing an embedded microcontroller, the limitations of the microcontroller with respect to the available I/O pins and on-device memory can impose unacceptable design constraints on the system. The number of I/O pins that are available constrain the size of the address space accessible by the microcontroller. This then limits the size and number of bus devices that reside in the address space. This need not only limit the size of memory available for software and data, but also may limit peripheral devices that are accessible by the microcontroller. Furthermore, on-device nonvolatile memory is typically very limited in its size, making storage of the operating software in an external memory space essential. Moreover, the microcontroller often is a one time programmable ("OTP") device, so that once the software is "burned into" the on-chip nonvolatile memory, it cannot be modified. The system software then cannot be updated without replacing the microcontroller chip itself.
Therefore, it may be desirable to store the system software in a nonvolatile programmable memory that resides in the external memory space. Updating of the system software could then be performed by downloading the new software into the nonvolatile memory. However, having the system program reside in the external memory space rather than on-chip only exacerbates the problem of a limited number of I/O pins.
Therefore, there is a need in the art for a method and circuitry to interface a microcontroller with nonvolatile memory containing its operating software such that the software can be easily updated by downloading the new software into the nonvolatile memory without exceeding the pin count of the microcontroller.